常见的兼容性问题
浏览器有着大量不同的版本,不同种类的浏览器的内核也不尽相同,所以不同浏览器对代码的解析会存在差异,这就导致对页面渲染效果不统一的问题。
初始化样式
因浏览器兼容的问题,不同的浏览器对标签的默认样式值不同,如果不初始化会造成不同浏览器之间的显示差异,布局出现错乱,所以要初始化样式,达到统一的布局。
最粗暴的方案就是使用*初始化样式,但是其会对于所有的标签加载样式以及计算样式优先级,可能会对性能有所影响。
* {
margin: 0;
padding: 0;
}
通常使用Normalize.css抹平默认样式差异,当然也可以根据样式定制自己的reset.css。
<link href="https://cdn.bootcss.com/normalize/7.0.0/normalize.min.css" rel="stylesheet">
内核样式兼容
在CSS3标准还未确定时,部分浏览器已经根据最初草案实现了部分功能,为了与之后确定下来的标准进行兼容,所以每种浏览器使用了自己的私有前缀与标准进行区分,当标准确立后,各大浏览器将逐步支持不带前缀的CSS3新属性,目前已有很多私有前缀可以不写了,但为了兼容老版本的浏览器,可以仍沿用私有前缀和标准方法,逐渐过渡。
| 内核 | 代表浏览器 | 前缀 |
|---|---|---|
| Trident | IE浏览器 | -ms |
| Gecko | Firefox | -moz |
| Presto | Opera | -o |
| Webkit | Chrome、Safari | -webkit |
透明属性
用来设定元素透明度的opacity是CSS 3里的一个属性,现代浏览器都已经支持,对于老版本浏览器可以通过加入私有前缀来支持,对于IE6-IE8